package fr.ajicommerce.managedBean;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;

import org.primefaces.event.RowEditEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import fr.ajicommerce.core.dto.UtilisateurBackOfficeDTO;
import fr.ajicommerce.core.entities.TypeUtilisateur;
import fr.ajicommerce.core.service.facade.Facade;
import fr.ajicommerce.core.service.interfaces.UtilisateurBackOfficeService;
import fr.ajicommerce.test.initbase.InitBase;


@Component("gestUserBean")
@Scope("session")
public class GestUserBean {

	@Autowired
	Facade facade;
	
	private String login;
	private String nom;
	private String prenom;
	private List<UtilisateurBackOfficeDTO> listeRecherche;
	private List<TypeUtilisateur> listeUtilisateur;
	private List<TypeUtilisateur> selectListeType;
	
	@PostConstruct
	public String recherche()
	{
		System.out.println(selectListeType);
		UtilisateurBackOfficeService service = facade.getUtilisateurBackOfficeService();
		listeUtilisateur = new ArrayList<>();
		listeUtilisateur.add(TypeUtilisateur.COMPTABLE);
		listeUtilisateur.add(TypeUtilisateur.GESTIONNAIRE_PRODUIT);
		listeUtilisateur.add(TypeUtilisateur.GESTIONNAIRE_UTILISATEUR);
		
		if(selectListeType == null)
		{
			selectListeType = new ArrayList<>(listeUtilisateur);
			
		}
			
		listeRecherche = new ArrayList<>();
		for(TypeUtilisateur type : selectListeType)
			listeRecherche.addAll(service.find( login,  nom,  prenom, type ));
		
		
		
		
		return null;
		
	}
	
	public String onEdit(RowEditEvent event)
	{
		for(UtilisateurBackOfficeDTO utilDto : listeRecherche)
		{
			if(utilDto.getId() != null)
				facade.getUtilisateurBackOfficeService().update(utilDto);
			else
			{
				utilDto.setMotDePasse("mdp");
				facade.getUtilisateurBackOfficeService().save(utilDto);
			}
		}
		
		return null;
		
	}
	
	public void ajouterUtilisateur()
	{
		UtilisateurBackOfficeDTO utilDto = new UtilisateurBackOfficeDTO();
		listeRecherche.add(utilDto);
		
	}
	
	
	public void removeItem(UtilisateurBackOfficeDTO utilisateur)
	{
		facade.getUtilisateurBackOfficeService().delete(utilisateur);
		listeRecherche.remove(utilisateur);
	}
	
	public String onCancel(RowEditEvent event)
	{
		
		
		return null;
		
	}
	
	
	

	public Facade getFacade() {
		return facade;
	}

	public void setFacade(Facade facade) {
		this.facade = facade;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public String getPrenom() {
		return prenom;
	}

	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}

	public List<UtilisateurBackOfficeDTO> getListeRecherche() {
		return listeRecherche;
	}

	public void setListeRecherche(List<UtilisateurBackOfficeDTO> listeRecherche) {
		this.listeRecherche = listeRecherche;
	}


	public List<TypeUtilisateur> getListeUtilisateur() {
		return listeUtilisateur;
	}


	public void setListeUtilisateur(List<TypeUtilisateur> listeUtilisateur) {
		this.listeUtilisateur = listeUtilisateur;
	}

	public List<TypeUtilisateur> getSelectListeType() {
		return selectListeType;
	}

	public void setSelectListeType(List<TypeUtilisateur> selectListeType) {
		this.selectListeType = selectListeType;
	}
	

	
}
